<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /* 
    洗牌算法
    迭代数组，从最后一位开始并将当前位置和一个随机位置进行交换。这个随机位 置比当前位置小。
    这样，这个算法可以保证随机过的位置不会再被随机一次
    */

    const swap = (array, a, b) => {
      const temp = array[a];
      array[a] = array[b];
      array[b] = temp;
    };

    function shuffle (arr) {
      // 从数组最后一项开始遍历
      for (let i = arr.length - 1; i > 0; i--) {
        //  Math.random取值是0-1  根据长度来计算  0.8的概率  前一个和后一个进行交换
        const randomIndex = Math.floor(Math.random() * (i + 1));
        swap(arr, i, randomIndex);
      }
      return arr
    }
    console.log(shuffle([1,2,3,4,5]));
    
  </script>
</body>

</html>